Memory is often implemented in electronic systems, such as computers, cell phones, hand-held devices, etc. There are many different types of memory, including volatile and non-volatile memory. Volatile memory may require power to maintain its data and may include random-access memory (RAM), dynamic random-access memory (DRAM), static random-access memory (SRAM), and synchronous dynamic random-access memory (SDRAM). Non-volatile memory may provide persistent data by retaining stored data when not powered and may include NAND flash memory, NOR flash memory, nitride read only memory (NROM), phase-change memory (e.g., phase-change random access memory), resistive memory (e.g., resistive random-access memory), cross-point memory, ferroelectric-random-access memory (FeRAM), or the like. Hard disc drives (HDDs) may be an example of another type of memory and may include magnetic tapes and/or optical discs.
The endurance of a memory may be defined as the number of writes, such as the number of write/erase (e.g., program/erase) cycles, that the memory may endure before it can no longer reliably store data (e.g., before it is likely to fail). For example, non-volatile memories may have lower endurance than DRAM.
In some examples, non-volatile memories may be divided into groups of memory cells, such as pages of memory cells, blocks of memory cells, etc. For example, some groups of memory cells may be subjected to higher numbers of writes than others and may be more likely to fail than groups subjected to lower numbers of writes. For example, a memory may be considered to be likely to fail when one or more of its groups of memory cells has a high write/erase cycle count, while other groups might have a low write/erase cycle count.
In some examples, endurance may be improved by using wear leveling. Wear leveling may spread the writes across the groups of memory cells. For example, groups with higher write/erase cycle counts may be replaced with groups with lower write/erase cycle counts during wear leveling.